/**
 * 知识点：redux 基本使用 - 创建仓库
 *
 *    1. createStore 创建仓库的时候必须传入一个函数，这个传入的函数官方成为 reducer 函数
 *        🔔语法： createStore( (state, action)=> newState )
 *                reducer 函数第一个形参为 state
 *                reducer 函数第二个形参为 action
 *                reducer 函数每次调用返回 state
 *
 *    2. store 仓库实例有 3个重要 API
 *          store.getState()             获取仓库数据
 *          store.dispatch(action)       修改仓库数据
 *          store.subscribe(listener)    监听仓库数据变化(订阅)
 *
 */

import { createStore } from 'redux'

const store = createStore(function (state = { msg: '其他数据', count: 1 }, action) {
  console.warn('你现在进入仓库的函数了action：', action)
  if (action.type === 'add') {
    // 使用原则：用新对象覆盖旧对象
    return { ...state, count: state.count + 1 }
  }
  return state
})

// console.log('仓库实例', store)

// 获取仓库中的 state
console.log('第1次获取', store.getState())

// dispatch 修改
store.dispatch({ type: 'add' })

// 获取仓库中的 state
console.log('dispatch 后第2次获取', store.getState())
